#include "..\CookHeader.h"

Array <Array <string>> bookAry = { {"", "߶㺣"}, {"̹", ""},
	{"Ȱ", "罺"}, {"Ű", ""}, {"Űȣ", "׽"}, 
	{"", ""}, {"̾", "츣켼"}, {"Ŀ콺Ʈ", ""}, {"", "޹"} };
Array <Array <string>> nameIndex, authIndex;

Array <Array <string>> makeIndex(Array <Array <string>> ary, int pos) {
	Array <Array <string>> sortedAry;
	int index = 0;
	for (int i = 0; i < len(ary); i++) {
		Array <string> data = ary[i];
		sortedAry.push_back({ data[pos] , to_string(index) });
		index++;
	}
	sortArray(sortedAry); //  ͷ .
	return sortedAry;
}

int bookSearch(Array <Array <string>> ary, string fData) {
	int pos = -1;
	int start = 0;
	int end = len(ary) - 1;

	while (start <= end) {
		int mid = (start + end) / 2;
		if (fData == ary[mid][0])
			return stoi(ary[mid][1]);
		else if (fData > ary[mid][0])
			start = mid + 1;
		else
			end = mid - 1;
	}
	return pos;
}

int main() {
	print("# å  ==>");
	printArray2(bookAry);
	println("");

	nameIndex = makeIndex(bookAry, 0);
	print("#  ǥ ==>");
	printArray2(nameIndex);
	println("");

	authIndex = makeIndex(bookAry, 1);
	print("# ۰ ǥ ==>");
	printArray2(authIndex);
	println("");

	string findName = "Ű";
	int findPos = bookSearch(nameIndex, findName);
	if (findPos != -1) {
		println(findName + " ۰ " + bookAry[findPos][1] + "Դϴ.");
	}
	else {
		println(findName + " å ϴ.");
	}

	findName = "";
	findPos = bookSearch(authIndex, findName);
	if (findPos != -1) {
		println(findName + "  " + bookAry[findPos][0] + "Դϴ.");
	}
	else {
		println(findName + " ۰ ϴ.");
	}
}